// @ 异步文件的写入

/*
 * 手动操作的步骤:
 *  1.打开文件 fs.open(path,flags[,mode],callback)
      # 异步调用方法,结果都是通过回调函数返回的
      # 回调函数有两个参数: err错误对象(如果没有错误则为null) fd文件描述符
      todo param {String} path 要打开文件的路径
      todo param {String} flags 打开文件要做的操作的类型 r只读的 w可写的
      todo param {*} mode 设置文件的权限,一般不传
 *    返回值:该方法会返回一个文件的描述符作为结果,我们可以通过该描述符来对文件进行各种操作
 *  2.向文件写入内容 fs.write(fd, string[,position[,encoding]],callback)
      # 回调函数有两个参数: err错误对象(如果没有错误则为null) 
      todo param {Number} fd 文件的描述符,需要传递要写入的文件的描述符
      todo param {String} string 要写入的内容
      todo param {Number} position 写入的起始位置
      todo param {String} encoding 写入的编码,默认utf-8
 *  3.保存并关闭文件 fs.close(fd,callback);
      todo param {*} fd 要关闭的文件的描述符
 */

// @ 打开文件不关会一直占用内容

var fs = require("fs");

// 打开文件
// 相对路径,打开当前目录下的txt
// 定义一个fd,用于接收结果
fs.open("异步文件写入.txt", "w", function (err, fd) {
  // console.log('123'); //123
  // console.log(arguments); //[null,3] 3文件已打开
  // 判断是否出错
  if (!err) {
    // console.log(fd); //3

    // 如果没有出差,对文件进行写入操作
    // 向文件中写入内容
    fs.write(fd, "异步文件写入测试", function (err) {
      if (!err) {
        console.log("写入成功");
      }
      // 关闭文件
      fs.close(fd, function () {
        console.log("文件已关闭");
      });
    });
  } else {
    console.log(err);
  }
});

// 保存并关闭文件
// fs.close(fd);
